/**
 * 加载html文件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns 字符串的文件内容
 */
export const loadHtmlFileToString = async (relativePath: string) => {
  // 动态加载所有 HTML 文件
  const htmlFiles = import.meta.glob("/src/project/html/**/*.html", { as: "raw" });
  const absolutePath = `/src/${relativePath}`;
  if (htmlFiles[absolutePath]) {
    return htmlFiles[absolutePath](); // 返回文件内容
  } else {
    throw new Error(`HTML file not found: ${relativePath}`);
  }
};

/**
 * 加载js文件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns 字符串的文件内容
 */
export const loadJSFileToString = async (relativePath: string) => {
  // 动态加载所有 js 文件
  const htmlFiles = import.meta.glob("/src/project/javascript/**/*.js", { as: "raw" });
  const absolutePath = `/src/${relativePath}`;
  if (htmlFiles[absolutePath]) {
    return htmlFiles[absolutePath](); // 返回文件内容
  } else {
    throw new Error(`javascript file not found: ${relativePath}`);
  }
};

/**
 * 加载Vue3文件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns Vue3字符串的文件内容
 */
export const loadVue3FileToString = async (relativePath: string) => {
  // 动态加载所有 `.vue` 文件，并按需加载
  const modules = import.meta.glob("/src/project/vue3/**/*.vue", { as: "raw" });
  const absolutePath = `/src/${relativePath}`;
  if (modules[absolutePath]) {
    const module = await modules[absolutePath]();
    return module;
  } else {
    throw new Error(`Module not found: ${relativePath}`);
  }
};

/**
 * 加载Vue3组件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns Vue3组件
 */
export const loadVue3FileToComponent = async (relativePath: string) => {
  // 动态加载所有 `.vue` 文件，并按需加载
  const modules = import.meta.glob("/src/project/vue3/**/*.vue");
  const absolutePath = `/src/${relativePath}`;
  if (modules[absolutePath]) {
    const module: any = await modules[absolutePath]();
    return module.default;
  } else {
    throw new Error(`Module not found: ${relativePath}`);
  }
};

/**
 * 加载Vue2文件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns Vue3字符串的文件内容
 */
export const loadVue2FileToString = async (relativePath: string) => {
  // 动态加载所有 `.vue` 文件，并按需加载
  const modules = import.meta.glob("/src/project/vue2/**/*.vue", { as: "raw" });
  const absolutePath = `/src/${relativePath}`;
  if (modules[absolutePath]) {
    const module = await modules[absolutePath]();
    return module;
  } else {
    throw new Error(`Module not found: ${relativePath}`);
  }
};

/**
 * 加载Vue3组件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns Vue3组件
 */
export const loadVue2FileToComponent = async (relativePath: string) => {
  // 动态加载所有 `.vue` 文件，并按需加载
  const modules = import.meta.glob("/src/project/vue2/**/*.vue");
  const absolutePath = `/src/${relativePath}`;
  if (modules[absolutePath]) {
    const module: any = await modules[absolutePath]();
    return module.default;
  } else {
    throw new Error(`Module not found: ${relativePath}`);
  }
};

/**
 * 加载Markdown文件
 * @param relativePath 文件路径
 * @param folderPath 文件夹配置
 * @returns 字符串的文件内容
 */
export const loadMarkdownToString = async (relativePath: string) => {
  // 动态加载所有 Markdown 文件
  const htmlFiles = import.meta.glob("/src/project/markdown/**/*.md", { as: "raw" });
  const absolutePath = `/src/${relativePath}`;
  if (htmlFiles[absolutePath]) {
    return htmlFiles[absolutePath](); // 返回文件内容
  } else {
    // throw new Error(`HTML file not found: ${relativePath}`);
    return "";
  }
};
